# demo01_re.py
import re
"""
# 1.使用正则表达式匹配开头的字符串
string = '123abcdef456ccc888'
# re.match(正则字符串, 目标字符串)
result01 = re.match('\d{3}', string)
# <re.Match object; span=(0, 3), match='123'>
# print(result01)
# 获取具体匹配到的字符串
print(result01.group())

# 2.使用正则表达式匹配第一次出现
# re.search(正则字符串, 目标字符串)
result02 = re.search('\d{3}', 'abcdef456ccc888')
print(result02)
print(result02.group())

# 3.匹配所有出现 _ 返回列表
# re.findall(正则字符串, 目标字符串)
result03 = re.findall('\d{3}', '123abc456ddd888')
print(result03) # ['123', '456', '888']

# 4.匹配所有出现 —— 返回迭代器
# re.finditer(正则字符串, 目标字符串)
result04 = re.finditer('\d{3}', '123abc456ddd888')
# <callable_iterator object at 0x7fc1bc321f40>
# print(result04)
for item in result04:
    print(item.group())

# 5.按照正则表达式对字符串进行切割
words = 'how  are   you?I am fine.Thank you,and you'
# 获取一句
result05 = re.split('\s+|\?|\.|,', words)
print(result05)
"""
# 6.匹配并替换
words = """
    小明说：WoCao，这局又输了
    晓东说：卧  槽，要不是因为小军出来慢，不至于输
    小军说：我 草，关我毛事...
"""
# re.sub(正则字符串, 替换字符串, 目标字符串)
# 不区分大小写
# result06 = re.sub('wocao|卧\s*槽|我\s*草', '**', words, flags=re.IGNORECASE)
# print(result06)

# 7.将正则字符串编译为正则表达式对象
# \d{3}
re_obj = re.compile('\d{3}')
# 可以使用正则表达式对象，进行重复匹配
r1 = re_obj.search('123abc')
print(r1)
r2 = re_obj.search('ccc456')
print(r2)
r3 = re_obj.search('ddd789')
print(r3)
r4 = re_obj.findall('123abc456def789')
print(r4)
r5 = re_obj.finditer('123abc568def998')
print(r5)